package com.kingmed.kmss.admin.modules.sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kingmed.kmss.admin.modules.sys.model.SysOpenRelation;

import java.util.List;
import java.util.Map;

/**
 * 对外授权接口关系Service接口
 * 
 * @date 2022-12-16
 */
public interface ISysOpenRelationService extends IService<SysOpenRelation>
{
    /**
     * 查询对外授权接口关系
     * 
     * @param id 对外授权接口关系主键
     * @return 对外授权接口关系
     */
    SysOpenRelation selectSysOpenRelationById(String id);

    /**
     * 查询对外授权接口关系列表
     * 
     * @param sysOpenRelation 对外授权接口关系
     * @return 对外授权接口关系集合
     */
    List<SysOpenRelation> selectSysOpenRelationList(SysOpenRelation sysOpenRelation);

    /**
     * 新增对外授权接口关系
     * 
     * @param sysOpenRelation 对外授权接口关系
     * @return 结果
     */
    boolean insertSysOpenRelation(SysOpenRelation sysOpenRelation);

    /**
     * 批量新增对外授权接口关系
     *
     * @param sysOpenRelationList 对外授权接口关系集合
     * @return 结果
     */
    boolean saveBatchByList(List<SysOpenRelation> sysOpenRelationList);

    /**
     * 修改对外授权接口关系
     * 
     * @param sysOpenRelation 对外授权接口关系
     * @return 结果
     */
    boolean updateSysOpenRelation(SysOpenRelation sysOpenRelation);

    /**
     * 批量删除对外授权接口关系
     * 
     * @param ids 需要删除的对外授权接口关系主键集合
     * @return 结果
     */
    boolean deleteSysOpenRelationByIds(String[] ids);

    /**
     * 删除对外授权接口关系信息
     * 
     * @param id 对外授权接口关系主键
     * @return 结果
     */
    boolean deleteSysOpenRelationById(String id);

    /**
     * 根据主键集合获取数据
     * @param ids
     * @return
     */
    Map<Long, SysOpenRelation> listByIdsReturnMap(List<String> ids);

    /**
     * 加载对外接口redis缓存
     */
    void loadingCache();

    /**
     * 删除关联关系
     * @param groupId
     */
    void deleteByGroupId(String groupId);

    /**
     * 删除关联关系
     * @param groupIds
     */
    void deleteByGroupId(List<String> groupIds);

    /**
     * 删除关联关系
     * @param urlId
     */
    void deleteByUrlId(String urlId);

    /**
     * 删除关联关系
     * @param urlIds
     */
    void deleteByUrlIds(List<String> urlIds);

    /**
     * 分页
     * @param sysOpenRelation
     * @param pageNum
     * @param pageSize
     * @return
     */
    Page<SysOpenRelation> list(SysOpenRelation sysOpenRelation, Integer pageNum, Integer pageSize);
}
